// 在你需要的地方引入
// 你可以把soket链接写在.vue中，也可以写在js文件中
import io from 'socket.io-client';

// 链接websoket
// 当我们与后端本地调试的时候url就是后端的ip和服务的端口号，后面按需要携带参数即可，注意协议是ws
// 当项目打包上线的时候如果服务器是https的，那么需要wss
const wsio = io('ws://192.168.0.206:52999/' + '?userKey=' + getUserKey());
// 清楚了如何链接websoket之后，我们在链接url的写法上要变化一下，因为本地调试和上线肯定不是一个URl
// 那么，我们可以通过环境变量，我们在开发环境可以给WEB_SOCKET_PATH直接设置成后端ip+端口即可，
// 在测试环境或者正式环境就用对应的域名+端口，总不能每次发包都去手动改吧
// const wsio = io(process.env.WEB_SOCKET_PATH + '?userKey=' + getUserKey());

// 想服务器发送消息，服务器端也会绑定一个send方法，触发他的回调拿到我们传递的参数
wsio.emit('send', {
    token: 'aaa'
});

//  监听事件回调，message和后端约定好
wsio.on('message', (data) => {
    console.log('progress', data);
});

// 服务器端断开链接,但是服务器并不知道什么时候断开链接，所以需要一个心跳检测
// 也就是前端向服务器端每隔540000发送个消息给服务器，告诉服务器我还活着，也就是你网页没有关闭，
// 如果你关闭了网页，是不是540000之后就没有发送heart了，
// 后端隔了540000没有收到你的消息，那自己断开链接
// 前端和服务器端都做断开链接操作，双重保险
setInterval(() => {
    wsio.emit('heart', {
        token: '111'
    });
}, 540000);

// 断开websoket链接分为两种
// 前端直接断开链接
wsio.close();
